package model.bean;

import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@Table(name="t_curriculo")
public class Curriculo {
	
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "geradorCurriculo")
	@SequenceGenerator(name = "geradorCurriculo", sequenceName = "sequence_curriculo", allocationSize=1)
	@Column(name="id_curriculo")
	private Long   id;
	
	@Column(length=100)
	private String nome;

	@Column(length=15)
	private String cpf;
	
	@Column(length=50)
	private String email;
	
	@Column(name="telefone_residencial",length=13)
	private String telefoneResidencial;
	
	@Column(name="telefone_celular",length=13)
	private String telefoneCelular;
	
	@Column(name="estado_civil",length=10)
	private String estadoCivil;
	
	@Column(length=20)
	private String cidade;
	
	@Column(length=20)
	private String bairro;
	
	@Column(length=2)
	private String estado;
	
	@Column(length=100)
	private String endereco;
	
	@Column(length=12)
	private String cep;
	
	@Column(name="esc_nivel" ,length=20)
	private String escolaridadeNivel;
	
	@Column(name="esc_data_inicio")
	@Temporal(TemporalType.DATE)
	private Date   escolaridadeDataInicio;
	
	@Column(name="esc_data_termino")
	@Temporal(TemporalType.DATE)
	private Date   escolaridadeDataTermino;
	
	@Column(name="esc_instituicao",length=25)
	private String escolaridadeInstituicao;
	
	@Column(name="esc_inf_adicionais",length=500)
	private String escolaridadeInfAdicionais;
	
	@Column(name="esc_status",length=10)
	private String escolaridadeStatus;
	
	@Column(name="id_aluno")
	private Long idAluno;
	
	@OneToMany(mappedBy="curriculo")
	@Cascade({CascadeType.ALL, CascadeType.DELETE_ORPHAN})
	private List<CursoExterno> cursosExternos;
	
	@OneToMany(mappedBy="curriculo")
	@Cascade({CascadeType.ALL, CascadeType.DELETE_ORPHAN})
	private List<Experiencia> experiencias;
	
	public String getCpf() {
		return cpf;
	}
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getTelefoneResidencial() {
		return telefoneResidencial;
	}
	public void setTelefoneResidencial(String telefoneResidencial) {
		this.telefoneResidencial = telefoneResidencial;
	}
	
	public String getTelefoneCelular() {
		return telefoneCelular;
	}
	public void setTelefoneCelular(String telefoneCelular) {
		this.telefoneCelular = telefoneCelular;
	}
	public String getEstadoCivil() {
		return estadoCivil;
	}
	public void setEstadoCivil(String estadoCivil) {
		this.estadoCivil = estadoCivil;
	}

	public String getCidade() {
		return cidade;
	}
	public void setCidade(String cidade) {
		this.cidade = cidade;
	}
	public String getBairro() {
		return bairro;
	}
	public void setBairro(String bairro) {
		this.bairro = bairro;
	}
	public String getEstado() {
		return estado;
	}
	public void setEstado(String estado) {
		this.estado = estado;
	}
	public String getEndereco() {
		return endereco;
	}
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	public String getCep() {
		return cep;
	}
	public void setCep(String cep) {
		this.cep = cep;
	}
	public String getEscolaridadeNivel() {
		return escolaridadeNivel;
	}
	public void setEscolaridadeNivel(String escolaridadeNivel) {
		this.escolaridadeNivel = escolaridadeNivel;
	}
	
	public void setEscolaridadeDataInicio(Date escolaridadeDataInicio){
		this.escolaridadeDataInicio = escolaridadeDataInicio;
	}
	
	public String getEscolaridadeInstituicao() {
		return escolaridadeInstituicao;
	}
	public void setEscolaridadeInstituicao(String escolaridadeInstituicao) {
		this.escolaridadeInstituicao = escolaridadeInstituicao;
	}
	public String getEscolaridadeInfAdicionais() {
		return escolaridadeInfAdicionais;
	}
	public void setEscolaridadeInfAdicionais(String escolaridadeInfAdicionais) {
		this.escolaridadeInfAdicionais = escolaridadeInfAdicionais;
	}
	public String getEscolaridadeStatus() {
		return escolaridadeStatus;
	}
	public Date getEscolaridadeDataInicio() {
		return escolaridadeDataInicio;
	}
	public Date getEscolaridadeDataTermino() {
		return escolaridadeDataTermino;
	}
	public void setEscolaridadeDataTermino(Date escolaridadeDataTermino) {
		this.escolaridadeDataTermino = escolaridadeDataTermino;
	}
	public void setEscolaridadeStatus(String escolaridadeStatus) {
		this.escolaridadeStatus = escolaridadeStatus;
	}
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	
	public List<CursoExterno> getCursosExternos() {
		return cursosExternos;
	}
	
	public void setCursosExternos(List<CursoExterno> cursosExternos) {
		this.cursosExternos = cursosExternos;
	}
	
	public List<Experiencia> getExperiencias() {
		return experiencias;
	}
	
	public void setExperiencias(List<Experiencia> experiencias) {
		this.experiencias = experiencias;
	}
	public Long getIdAluno() {
		return idAluno;
	}
	public void setIdAluno(Long idAluno) {
		this.idAluno = idAluno;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
}
